home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
EnigmA Amiga Run 1996 April
/
EnigmA AMIGA RUN 06 (1996)(G.R. Edizioni)(IT)[!][issue 1996-04][Skylink CD V].iso
/
progs
/
editor
/
write-ed
/
rexx
/
foldoberonprocs.wrx
< prev
next >
Wrap
Text File
|
1995-05-01
|
3KB
|
153 lines
/*
* FoldOberonProgs.wrx © 1994-1995 Tim Teulings
*
* Ein Script für den Texteditor WRITE ab V.3.1536 © Tim Teulings
*
* Dieses Script faltet den Körper aller Oberon-Prozeduren (erster Level)
* weg.
* Dabei muß folgende Formatierung eingehalten werden :
* - Das Keywort 'PROCEDURE' muß in der 3. Spalte anfangen.
* - Das dazugehörige 'END <Prozedurname>'' muß sich ebenfalls in der
* dritten Spalte befinden.
*
* Dies kann allerdings durch ändern der Variablen HEADER und BODYEND
* geändert werden.
*
* Formatierungfehler führen möglicherweise dazu, daß Faltungen falsch
* gesetzt werden.
*
* $VER 1.1 (Tim Teulings)
*
* 1.1 updated to version 3.1536 (Tim Teulings)
* 1.0 initial version (Tim Teulings)
*
*/
OPTIONS RESULTS
IF ~show('P',"WRITE")
THEN DO
say 'Dieses Script läuft nur, wenn WRITE bereits gestartet wurde !'
exit 10
END
ADDRESS "WRITE"
'VERSIONCHECK 40000 "FoldOberonProcs.wrx"'
IF RC~=0 THEN DO
exit 10
END
'GETVAR "_CurrentID"'
ID = RESULT /* GETVAR gibt den ID des aktuellen Fenster zurück, */
/* der von den weiteren Befehlen benötigt wird. */
IF ID=0 THEN DO
MESSAGEOK (Kein Fenster aktiviert !)
EXIT
END
OPENPORT ID /* PrivatePort des aktuellen Fensters öffnen */
Port = RESULT
IF Port="" THEN DO /* 'OPENPORT' gibt "" zurück, wenn Port nicht */
/* geöffnet werden konnte */
LOCKWINDOW ID /* Fenster wird einfach gelockt */
END
ELSE DO
INTERPRET ADDRESS Port /* PrivatePort addressieren. Alle Komandos */
/*beziehen sich nun auf das Fenster mit diesem Port */
END
'SILENT' /* Silent-Mode wegen Geschwindigkeit */
HEADER = ' PROCEDURE'
BODYEND = ' END'
'GETVAR "_xPos"' /* Cursorposition holen */
OldPos.x = RESULT
'GETVAR "_yPos"'
OldPos.y = RESULT
GOTO @SOT @SOT
'SETVAR "_FindString" &HEADER'
'FIND @CURSOR @CURSOR @EOT @EOT {@SILENT @CASE}'
DO WHILE RC = 0
'GETVAR "_xPos"'
xPos = RESULT
'GETVAR "_yPos"'
From = RESULT
IF xPos=1 THEN DO
/*
* Die folgenden kommentierten Zeeilen matchen bei PROCEDURE .. END
* die Prozedurnamen, versagen allerdings bei Deklarationen des Types
* PROCEDURE ( sff : wee) <ProcName>
*/
/* 'NEXTWORD NEXTWORD'
'GETVAR "_CurrentWord"'
PROCNAME = RESULT
'SETVAR "_FindString" "&BODYEND& &PROCNAME&;"'
'FIND @CURSOR @CURSOR @EOT @EOT {@SILENT @CASE}'
IF RC=0 THEN DO
'GETVAR "_xPos"'
xPos = RESULT
'GETVAR "_yPos"'
TO = RESULT
IF xPos=1 THEN DO
Fold From+1 To
END
END */
/* Alternativlösung */
'SETVAR "_FindString" &BODYEND'
'FIND @CURSOR @CURSOR @EOT @EOT {@SILENT @CASE}'
RES = RC
'GETVAR "_xPos"'
xPos = RESULT
DO WHILE RES = 0 & xPos~=1
'FIND @CURSOR @CURSOR @EOT @EOT {@SILENT @CASE}'
RES = RC
'GETVAR "_xPos"'
xPos = RESULT
END;
IF RES = 0 THEN DO
'GETVAR "_YPos"'
To = RESULT
Fold From+1 To
END
/* Ende der Alternativlösung */
END
'SETVAR "_FindString" &HEADER'
FIND 1 From+1 '@EOT @EOT {@SILENT @CASE}'
END
GOTO OldPos.x OldPos.y
WINDOW 0 0 0 0 /* Silent-Mode wieder ausschalten */
"MESSAGEOK (REXX-Script\n'FoldOberonProc.wrx'\n\nFertig !)"
IF Port="" THEN DO
LOCKWINDOW 0
END
ELSE DO
CLOSEPORT ID
END